home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
United Public Domain Gold 2
/
United Public Domain Gold 2.iso
/
utilities
/
pu062.dms
/
pu062.adf
/
AutoPics
/
autopics2.c
< prev
next >
Wrap
C/C++ Source or Header
|
1987-08-08
|
3KB
|
120 lines
/* AUTOPICS by Nick Ruppert 5-23-87
will call your viewing program to display all the pics in a directory
having the user-specified extension (such as .pic or .ham).
Autopics will default to "uShow" and ".pic".
Compiled with Manx Aztec 3.4 +l. Linked with c32.lib.
*/
/*
For questions & comments, I can be reached thru
PSA BBS (sysop Dorothy Dean)
414-278-5390
*/
#include <stdio.h>
main(argc, argv)
int argc;
char *argv[];
{
static char extension[7]; /* storage for extension (* + 5 chars + EOS)*/
static char *args[] = {"uShow", ".pic", ""};
static char *defaults[] = {"Defaulting to \"uShow\" and \".pic\".",
"Defaulting to \"uShow\".", "Defaulting to \".pic\"."};
char *scdir(), *malloc(), *ptr, *files[100], *usage =
"USAGE: autopics [viewing_prog] [extension] [start (optional)]";
/* ptr = pointer to temp dir filename */
int count, count1, compare();
switch (argc)
{
case (1) : puts(usage); puts(defaults[0]); break;
case (2) : if (argv[1][0] == '.')
{ args[1] = argv[1]; puts(defaults[1]); }
else if (tolower(argv[1][0]) == 's' && argv[1][1] == '=')
{ args[2] = &argv[1][2]; puts(defaults[0]); }
else
{ args[0] = argv[1]; puts(defaults[2]); }
break;
case (3) : if (tolower(argv[2][0]) == 's' && argv[2][1] == '=')
args[2] = &argv[2][2];
else
{ args[0] = argv[1]; args[1] = argv[2]; break; }
if (argv[1][0] == '.')
{ args[1] = argv[1]; puts(defaults[1]); }
else
{ args[0] = argv[1]; puts(defaults[2]); }
break;
case (4) : for (count = 1; count < argc-1; count++)
args[count-1] = argv[count];
if (tolower(argv[count][0]) == 's' && argv[count][1] == '=')
args[count-1] = &argv[count][2];
break;
default : puts("Too many args.");
puts(usage);
exit();
}
extension[0] = '*'; /* make 1st extension char '*' */
for (count = 0; count < strlen(args[1]) && count < 5; count++)
extension[count+1] = args[1][count];
fputs("Reading the directory for all files", stdout);
fputs(" with the extension \"", stdout);
fputs(extension, stdout);
puts("\"...");
for (count = 0; (ptr = scdir(extension)) && count < 100; count++)
{
files[count] = malloc(strlen(ptr)+1);
strcpy(files[count], ptr);
}
if (count)
{
count1 = 0; /* initialize */
if (*args[2])
{
for (; compare(args[2], files[count1]) &&
count1 < count; count1++) ;
if (count1 == count)
{
fputs("\nERROR: \"", stdout);
fputs(args[2], stdout);
puts("\" is not in this directory");
exit(1);
}
}
puts("\nNow viewing...");
for (; count1 < count; count1++)
{
puts(files[count1]);
if (fexecl(args[0], 0L, files[count1], 0L) != 0)
{
fputs("\nERROR: I am unable to use ",stdout);
fputs(args[0], stdout);
fputs(" to show ", stdout);
puts(files[count1]);
exit(1);
}
}
puts("END OF PICTURES\n");
}
else
{
fputs("\nSorry, there are no files with the extension ", stdout);
puts(&extension[1]);
}
}
/* - - - - - - - - - - - */
/* compare 2 strings regardless of case returning 0 if a match */
int compare(s1, s2)
char *s1, *s2;
{
for (; *s1 != '\0'; s1++, s2++)
{
if (*s1 == '#' && *(s1+1) == '?') /* match all */
return (0);
if (*s1 == '?') /* wildcard */
continue;
if(toupper(*s1) != toupper(*s2))
return (1);
}
return (*s2);
}